package processus;

import server.Server;

public class ClientTrace extends Thread {
    
    protected Server  server;
    protected Integer pid;
    protected Tampon  tampon;

    /**
     * Constructeur
     */
    public ClientTrace(Tampon tampon, Pere pere) {
        
        try {
            
            this.server = (Server) java.rmi.Naming.lookup("rmi://localhost:1099/serverSVG");
            
            // Le client trace s'enregistre et on récupère le pid
            this.pid = server.register();
            pere.setPid(this.pid);
            
            // On enregistre le tampon
            this.tampon = tampon;
        
        }
        catch (Exception e) { 
            e.printStackTrace();
        }
        
        
    }

    @Override
    public void run()
    {
        try {
            System.out.println("[ClientTrace P"+pid+"] Lancé");

            while(true) {
                String cmd = tampon.retirer();
                
                // Si on doit s'arréter
                if(cmd.equals("CLOSE")) {
                    break;
                }
                
                // Sinon on envoi la commande au serverSVG
                cmd = cmd.replaceAll("#", String.valueOf(pid)); // On remplace le # par le pid
                server.parseCmd(cmd);
            }
            
            server.closeProcessus(pid);
            System.out.println("[ClientTrace P"+pid+"] Arrété");
        
        }
        catch (Exception e) { 
            e.printStackTrace();
        }
    }
    
    
    
}